chore(deps): update nuxt core to v4 (major) #596
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
3.17.5->4.0.13.17.5->4.0.1^3.17.4->^4.0.0Release Notes
nuxt/nuxt (@nuxt/kit)
v4.0.1Compare Source
✅ Upgrading
Our recommendation for upgrading is to run:
This will deduplicate your lockfile as well, and help ensure that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem.
👉 Changelog
compare changes
🩹 Fixes
nuxt.schemafiles to node tsconfig context (#32644)nitropack(ed5ad64ad)shared/dir (#32676)💅 Refactors
📖 Documentation
-t v4tag from getting started (343f59235)noUncheckedIndexedAccessrule change in v4 guide (#32643)📦 Build
nitropacktypes as external (39be1b3a9)🏡 Chore
🤖 CI
❤️ Contributors
v4.0.0Compare Source
Nuxt 4.0 is here! 🎉
After a year of real-world testing, we're excited to announce the official release of Nuxt 4. This is a stability-focused major release, introducing a few thoughtful breaking changes in order to improve development experience.
If you've been following along, you'll recognize many of these features and changes — and if you're new to them, we hope you'll welcome them.
🔥 What's new?
Nuxt 4 is all about making your development experience smoother:
app/directory structureshared/folder, and configurationWhy these features in particular? Mostly because these kind of improvements have required making changes that are technically breaking.
In general, we aim for a hype-free approach to releases. Rather than save up features for a big release, we've been shipping improvements in Nuxt 3 minor releases.
We've also spent a lot of time figuring out how to implement these changes in a backwards-compatible way, and I hope that means that most Nuxt 3 projects can upgrade with a minimum of effort.
I'd advise reading through the upgrade guide before you start, to understand what areas of your app might be affected.
🗂️ New project structure
The biggest visible change is how projects are organized. Your application code now lives in an
app/directory by default:This helps keep your code separate from
node_modules/and.git/, which makes file watchers faster (especially on Windows and Linux). It also gives your IDE better context about whether you're working with client or server code.🎨 Updated UI templates
Nuxt’s starter templates have an all new look, with improved accessibility, default titles, and template polish (#27843).
🔄 Smarter data fetching
We've made
useAsyncDataanduseFetchwork better. Multiple components using the same key now share their data automatically. There's also automatic cleanup when components unmount, and you can use reactive keys to refetch data when needed. Plus, we've given you more control over when cached data gets used.Some of these features have already been made available in Nuxt v3 minor releases, because we've been rolling this out gradually. Nuxt v4 brings different defaults, and we expect to continue to work on this data layer in the days to come.
🔧 Better TypeScript experience
Nuxt now creates separate TypeScript projects for your app code, server code,
shared/folder, and builder code. This should mean better autocompletion, more accurate type inference and fewer confusing errors when you're working in different contexts.This is probably the single issue that is most likely to cause surprises when upgrading, but it should also make your TypeScript experience much smoother in the long run. Please report any issues you encounter. 🙏
⚡ Faster CLI and development
In parallel with the release of v4, we've been working on speeding up
@nuxt/cli.fs.watchAPIs for fewer system resourcesThese improvements combined can make a really noticeable difference in your day-to-day development experience, and we have more planned.
🚀 How to upgrade
Although any major release brings breaking changes, one of our main aims for this release is to ensure that the upgrade path is as smooth as possible. Most of the breaking changes have been testable with a compatibility flag for over a year.
Most projects should upgrade smoothly, but there are a few things to be aware of:
@nuxt/kit. (This will particularly affect module authors.)Don't worry though — for most breaking changes, there are configuration options to revert to the old behavior while you adjust.
1. Update Nuxt
Our recommendation for upgrading is to run:
This will deduplicate your lockfile as well, and help ensure that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem.
2. Optional: use migration tools
We’ve also partnered with Codemod to automate many, though not all, migration steps:
3. Test and adjust
Run your tests, check that everything builds correctly, and fix any issues that come up. The upgrade guide has detailed migration steps for specific scenarios.
We'd recommend reading through it in full before starting your upgrade, to understand what areas of your app might be affected.
🗺️ What's next?
We're planning quick patch releases to address any issues that come up. Nuxt 3 will continue to receive maintenance updates (both bug fixes and backports of features from Nuxt 4) until the end of January 2026, so there's no rush if you need time to migrate.
Looking ahead, we plan to release Nuxt 5 on the sooner side, which will bring Nitro v3 and h3 v2 for even better performance, as well as adopting the Vite Environment API for an improved (and faster!) development experience. And there's a lot more in the works too!
And, quite apart from major releases, we have a lot of exciting features planned to make their way into Nuxt 3.x and 4.x release branches, including support for SSR streaming (#4753), a first-party accessibility module (#23255), built-in fetch caching strategies (#26017), more strongly typed fetch calls (landing in Nitro v3), dynamic route discovery (#32196), multi-app support (#21635) and more.
❤️ Thank you
This release is credit to so many people, particularly those who have been testing v4 compatibility mode over the past year. I'm really grateful — thank you for all your help!
Happy coding with Nuxt 4! 🚀
👉 Changelog
compare changes
🚀 Enhancements
mlly(#28012)addServerImports(#32289)onWatcherCleanupto imports presets (#32396)<NuxtTime>prop types (#32547)🔥 Performance
render:htmlfor server islands (#27889)🩹 Fixes
compatibilityVersion: 4(#27710)builder:watchhook (#27709)asyncDatavalue behaviour (#27718)__NUXT__after hydration (#27745)4(7aae4033b)resolvePathutils as sync (655e1473d)tryResolveModule(2d136e04c)requireModuleandtryRequireModule(#28013)useScriptCrispscripts stub (0c3cc4cf3)globalNameproperty (#28391)updateAppConfigin HMR (#28349)ssr: false(#28488)windowaccess (d874726ff)resolveIdfromvite-nodeto resolve deps (#30922)isEqualfrom mainohashexport (3ec1a1e5e)output.preserveModules(ce49734aa)#app-manifestimport in dev mode (#31539)purgeCachedDatauntil v4 (7aa3a01ae)purgeCachedDataby default (06745604c).execute(d79e14612)compatibilityVersion: 3(#32255)useAsyncData(#32170)errorValue/valueto be undefined (7e4eac655)srcDir(#32487)@nuxt/cli(#32488)tsConfigdoesn't exclude too many types (#32528)app/andserver/folders into tsconfigs (#32592)typescript.hoist(#32601)tsconfig.server.json(#32594)compatibilityDateto2025-07-15(e35e1ccb9)scrollBehaviorTypefor hash scrolling (#32622)💅 Refactors
#app/components/layout->#app/components/nuxt-layout(209e81b60)dedupeoption (#28151)installNuxtModule(501ccc375)oxc-walker(#32250)onPrehydratetransform (#32045)📖 Documentation
useAsyncDatamust return (#28259)deepdefault foruseAsyncData&useFetch(#28564)deepoption (bec85dfcd).nuxtignoreexamples for v4 structure (#32489)useNuxtDatain data fetching composable pages (#32589)📦 Build
🏡 Chore
vite-plugin-checkerseparately (02d46dd3d)engines.nodecompatibility (a26322f5f)nuxi(9aa4c7c3b)nuxiversion again (#30547)oxc-parserupdates temporarily (1cd0fb5cb)nitro/templatesdirectory (e531477f8)✅ Tests
attwtest for built packages (#30206)configResolved(8d3bd4f9f)🤖 CI
render:htmlfor server islands (#27889)compatibilityVersion: 4(#27710)builder:watchhook (#27709)asyncDatavalue behaviour (#27718)__NUXT__after hydration (#27745)4(7aae4033b)globalNameproperty (#28391)compatibilityVersion: 3(#32255)useAsyncData(#32170)compatibilityDateto2025-07-15(e35e1ccb9)#app/components/layout->#app/components/nuxt-layout(209e81b60)❤️ Contributors
v3.17.7Compare Source
✅ Upgrading
Our recommendation for upgrading is to run:
This will deduplicate your lockfile as well, and help ensure that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem.
👉 Changelog
compare changes
🩹 Fixes
extraPageMetaExtractionKeys(#32510)loadBuildererror cause (8f13ce3c2)nullvalues (c1b83eab5)semver.satisfiesreturns true for pre-release versions (#32574)execute being passed towatch` (#32591)📖 Documentation
NUXT_(#32223)useAsyncDataanduseFetchmigration (#32560)undefinedtonullin v3 docs (#32562)asynckeyword (#32587)✅ Tests
generateTypes(c0855439d)<NuxtTime>test (#32558)❤️ Contributors
v3.17.6Compare Source
✅ Upgrading
Our recommendation for upgrading is to run:
This will deduplicate your lockfile as well, and help ensure that you pull in updates from other dependencies that Nuxt relies on, particularly in the unjs ecosystem.
👉 Changelog
compare changes
🔥 Performance
🩹 Fixes
nuxt.config(#32324)nuxt:chunk-reload-immediate(#32382)set-cookieheaders in error handler (#32483)asyncDataruns if changing key while fetcher is running (#32466)navigateTo(#32393)<NuxtLink>'s custom on click handler (#32499)inheritAttrs: falseincreateClientOnlyfn (#32323)output.generatedCode.symbolsfor nitro build (#32358)💅 Refactors
📖 Documentation
h3js(#32243)clearfunction description (#32287)defineNuxtPluginfunction documentation (#32328)<NuxtLink>encodes query params (#32361)bun.lockfor lockfile (#32427)🏡 Chore
workspacetoprojects(#32388)✅ Tests
immediate: false(#32473)🤖 CI
❤️ Contributors
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.